在上一篇我們已經安裝好JupyterHub, 也說明config檔的參數內容, 現在我們使用admin這個user登入jupyterhub.
我們開啟JupyterHub首頁, 帳號輸入admin, 再點按Sign in
接下來, 我們要建立一個新的noteboobk, 請點按下圖的 New
-> Python 3(ipykernel)
看到這樣的畫面就可以開始寫notebook了.
或著你可以上傳你已寫好的notebook檔案.
那我們就來上傳一個notebook檔案
fastai_mnist.ipynb
Upload
鍵fastai_mnist.ipynb
檔, 然後點擊下圖的Upload
鍵在執行notebook之後, 我們需要安裝所需的package
請在檔案列表頁面點擊 New -> Terminal
然後在Terminal頁面中輸入下列指令並執行
pip install fastai
如下圖
完成package安裝之後, 然後就可以執行notbook的內容
fastai是一組基於pytorch所封裝而成的程式庫, 讓使用者可以更容易使用pytorch操作, 也就是pytorch是比較下層的程式庫, 而fastai對比pytorch是比較上層的程式庫.
這個關係就好像karas(上層)與tensorflow(下層)的關係,
這個notebook範例是以fastai執行MNIST資料集訓練手寫辨識功能, 完成訓練後會將訓練完成的mode匯出以做為之後部署在推論環境所使用,以下說明重點內容
滙入全部的fastai.vision程式庫
from fastai.vision.all import *
下載MNIST資料集
path = untar_data(URLs.MNIST)
ImageDataLoaders是fastai所提供的類別, 並且呼叫from_folder函式將圖像分為訓練資料與測試資料
dls = ImageDataLoaders.from_folder(path,train='training', valid='testing')
建立卷積神經網路(CNN)
建立CNN時需要帶入下列參數
learn = cnn_learner(dls, resnet18, pretrained=True, metrics=accuracy)
執行訓練
執行訓練時我們呼叫 fine_tune函數, 進行微調
. 函式中的參數是epoch的次數, 也就是每張照片要觀察多少次, 這裡我們設定為1
learn.fine_tune(1)
也可以使用 fit_one_cycle(epochs, learning_rate)執行訓練, 意思是不採用pre-trained好的權重值, 而是要重頭開始訓練模型, 那就要把pretrained參數設定為false (pretrained=False)
完成訓練之後, 可以在notebook上看到訓練(微調)的結果
將模型匯出
完成訓練之後需要把模型儲存起來. 我們使用export函式將模型架構
與模型參數
儲存起來, 呼叫export函式之後會產生export.pkl
的檔案, 這個模型檔的格式是pickle.
learn.export()
匯出模型後, 你會在Jupyter檔案列表中看到這個檔案, 如下圖
下載模型
因為我們之後會手動部署這個訓練好的模型, 所以請使用notebook下載功能將export.pkl
下載到本機存放.
到這裡我們已完成訓練並且取得模型檔